/*
*
* 关注接口
*/

const express = require('express');
const router = express.Router();
const passport = require('passport');

const Like = require('../../models/Like');
const ArticleList = require('../../models/ArticleList');

//$rote GET api/like
// @desc 返回请求的json数据
// @access public
router.get('/',(req,res)=>{
    res.send (`
/**
*   [post] /add
*   param:{
*       articleId:文章的id
*       likeuserId:用户的id
*       likeuser:用户名
*   }
*/  
/**
*   [delete] /unLike:id
*/  
/***
 * 根据用户id 和文章id查询 是否当前用户有没有关注改文章
 * [get] /change/?likeuserId='用户id'&articleId=‘文章id’
 */
    `)
});
/***
 * [post] 关注
 * articleId：文章id
 * likeuser：关注用户
 * likeuserId：关注用户id
 */
router.post('/add',passport.authenticate('jwt',{session:false}),(req,res)=>{
    const likeFileldes = {};
    if(req.body.articleId) likeFileldes.articleId = req.body.articleId;
    if(req.body.likeuser) likeFileldes.likeuser = req.body.likeuser;
    if(req.body.likeuserId) likeFileldes.likeuserId = req.body.likeuserId;
    // 查询用户有没有点赞这篇文章
    Like.findOne({likeuserId:likeFileldes.likeuserId }).then(isLike=>{
        if(isLike){
            return res.status(400).json('文章已关注！')
        } else {
            new Like(likeFileldes).save().then(like => {
                //更新文章中点赞数量
                ArticleList.findOne({_id:likeFileldes.articleId}).then(list=>{
                    if(list){
                        const like = list.likenum+1;
                        ArticleList.findOneAndUpdate(
                            { _id:likeFileldes.articleId },
                            { $set: { likenum: like } },
                            {new:true}
                        ).then(ss=>{

                        })
                    }
                });
                res.json(like)
            }).catch(err=>res.status(400).json(err))
        }
    })
});
/***
 * 根据用户id 和文章id查询 是否当前用户有没有关注改文章
 * [get] /change/?likeuserId='用户id'&articleId=‘文章id’
 *
 */
router.get('/change',passport.authenticate('jwt',{session:false}),(req,res)=>{
    let query = {};
    if(req.query.likeuserId){
        query['likeuserId']=req.query.likeuserId
    }
    if(req.query.articleId){
        query['articleId']=req.query.articleId
    }
    Like.findOne(query).then(like=>{
        if(!like){
            return res.status(404).json('关注的没有查找到');
        }
        res.json(like)
    }).catch(err=>res.status(404).json(err))
});

/***
 * [delete] unLike
 */
router.delete('/unLike/:id',passport.authenticate('jwt',{session:false}),(req,res)=>{
    Like.findOneAndRemove({_id:req.params.id}).then(like=>{
        //更新文章中关注数量
        ArticleList.findOne({_id:like.articleId}).then(list=>{
            if(list){
                const likeNum = list.likenum-1;
                ArticleList.findOneAndUpdate(
                    { _id:like.articleId },
                    { $set: { likenum: likeNum } },
                    {new:true}
                ).then(ss=>{

                })
            }
        });
        like.save().then(like=>res.json({like,msg:'删除成功!',status:true}))
    }).catch(err=>res.status(404).json({msg:'删除失败!',status:false}))
});

module.exports = router;